{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0      414592\n",
      "1      956877\n",
      "2     1123582\n",
      "3      893667\n",
      "4      600000\n",
      "5      520000\n",
      "6      280000\n",
      "7      795000\n",
      "8     1150000\n",
      "9     1320000\n",
      "10    1380234\n",
      "Name: 房价, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "data = pd.read_csv('data/task1_data.csv')\n",
    "data.head()\n",
    "\n",
    "#复制\n",
    "x = data.loc[:, '面积']\n",
    "y = data.loc[:, '房价']\n",
    "fig1 = plt.figure()\n",
    "plt.scatter(x, y)\n",
    "plt.xlabel('size')\n",
    "plt.ylabel('price')\n",
    "plt.show()\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11,)\n",
      "(11, 1)\n"
     ]
    }
   ],
   "source": [
    "# 数据格式转化\n",
    "x = np.array(x)\n",
    "y = np.array(y)\n",
    "print(x.shape)\n",
    "#维度转化,行数不变,列数为1列\n",
    "x = x.reshape(-1, 1)\n",
    "y = y.reshape(-1, 1)\n",
    "print(x.shape)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[8905.69177214]] [53690.91547905] y=f(x)=8905.691772135347*x+53690.91547905456\n",
      "[[ 659277.95598426]\n",
      " [ 899731.63383191]\n",
      " [ 962071.47623686]\n",
      " [1211430.84585665]\n",
      " [ 588032.42180718]\n",
      " [ 454447.04522515]\n",
      " [ 320861.66864311]\n",
      " [ 766146.25724988]\n",
      " [1122373.9281353 ]\n",
      " [1060034.08573035]\n",
      " [1389544.68129936]]\n",
      "[[ 659277.95598426]\n",
      " [ 899731.63383191]\n",
      " [ 962071.47623686]\n",
      " [1211430.84585665]\n",
      " [ 588032.42180718]\n",
      " [ 454447.04522515]\n",
      " [ 320861.66864311]\n",
      " [ 766146.25724988]\n",
      " [1122373.9281353 ]\n",
      " [1060034.08573035]\n",
      " [1389544.68129936]]\n",
      "[[944260.09269259]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "#线性回归(LinearRegression())\n",
    "model = LinearRegression()\n",
    "\n",
    "#训练模型\n",
    "model.fit(x, y)\n",
    "\n",
    "#获取线性回归模型参数a,b(coef=系数,intercept=截距)\n",
    "a = model.coef_\n",
    "b = model.intercept_\n",
    "print(a, b, \"y=f(x)={}*x+{}\".format(a[0][0], b[0]))\n",
    "\n",
    "#结果预测\n",
    "y_predict = a[0][0] * x + b[0]\n",
    "print(y_predict)\n",
    "\n",
    "# 第二种预测方法\n",
    "y_predict2 = model.predict(x)\n",
    "print(y_predict2)\n",
    "# 预测面积为100时,对应的价格\n",
    "x_test = np.array([[100]])\n",
    "y_test_p = model.predict(x_test)\n",
    "print(y_test_p)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "fig1 = plt.figure()\n",
    "plt.scatter(x, y, label='y_real')\n",
    "plt.plot(x, y_predict, label='y_predict')\n",
    "plt.xlabel('size')\n",
    "plt.ylabel('price')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24142828491.61459 0.8059384532844911\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "\n",
    "#模型表现评估\n",
    "\n",
    "#均方差(MSE)损失函数\n",
    "MSE = mean_squared_error(y, y_predict)\n",
    "\n",
    "# R2 越接近1越准确\n",
    "R2 = r2_score(y, y_predict)\n",
    "\n",
    "print(MSE, R2)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}